///**
// * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
// * 
// * 项目名：	cards-web
// * 文件名：	TestCardController.java
// * 模块说明：	
// * 修改历史：
// * 2017年4月6日 - Debenson - 创建。
// */
//package com.alex.insistence.web.wechat;
//
//import java.util.List;
//import java.util.Map;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//import org.jeecgframework.core.common.controller.BaseController;
//import org.jeecgframework.core.common.model.json.AjaxJson;
//import org.joda.time.DateTime;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.ModelAndView;
//
//import com.alex.wechat.app.account.controller.WxAppAccountController;
//import com.alibaba.fastjson.JSONObject;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//
//import me.chanjar.weixin.common.bean.WxCardApiSignature;
//import me.chanjar.weixin.common.bean.WxJsapiSignature;
//import me.chanjar.weixin.common.util.JsonMapper;
//import me.chanjar.weixin.mp.api.WxMpCardxService;
//import me.chanjar.weixin.mp.api.WxMpService;
//import me.chanjar.weixin.mp.bean.card.ActivateMemberForm;
//import me.chanjar.weixin.mp.bean.card.ActivateMemberForm.CommonFieldID;
//import me.chanjar.weixin.mp.bean.card.ActivateMemberForm.FormField;
//import me.chanjar.weixin.mp.bean.card.ApplyCardQrCode;
//import me.chanjar.weixin.mp.bean.card.ApplyCardQrCodeResult;
//import me.chanjar.weixin.mp.bean.card.BaseInfo;
//import me.chanjar.weixin.mp.bean.card.BaseInfo.CodeType;
//import me.chanjar.weixin.mp.bean.card.BaseInfo.DateInfo;
//import me.chanjar.weixin.mp.bean.card.BaseInfo.DateInfo.DateInfoType;
//import me.chanjar.weixin.mp.bean.card.BaseInfo.Sku;
//import me.chanjar.weixin.mp.bean.card.ConsumeCardResult;
//import me.chanjar.weixin.mp.bean.card.Coupon;
//import me.chanjar.weixin.mp.bean.card.Member;
//import me.chanjar.weixin.mp.bean.card.Member.BonusRule;
//import me.chanjar.weixin.mp.bean.card.Member.CustomField;
//import me.chanjar.weixin.mp.bean.card.QueryCardResult;
//import me.chanjar.weixin.mp.bean.card.UserCards;
//import me.chanjar.weixin.mp.bean.result.WxMpCardResult;
//
///**
// * @author Debenson
// * @since 0.1
// */
//@Controller
//@RequestMapping("/testCardController")
//public class TestCardController extends BaseController {
//  private static final Logger logger = Logger.getLogger(WxAppAccountController.class);
//
//  @Autowired
//  private WxMpService mpService;
//  @Autowired
//  private WxMpCardxService cardxService;
//
//  private String getRequestUrl(HttpServletRequest request) {
//    String url = request.getRequestURL().toString();
//    if (StringUtils.isNotBlank(request.getQueryString())) {
//      return url + "?" + request.getQueryString();
//    }
//    return url;
//  }
//
//  @RequestMapping(params = "getCardsList")
//  @ResponseBody
//  public AjaxJson getCardsList(HttpServletRequest request) {
//    AjaxJson j = new AjaxJson();
//
//    try {
//      List<RsCardSign> cards = Lists.newArrayList();
//
//      // AddCardData card1 = new AddCardData();
//      // cards.add(card1);
//      // String cardId1 = "p76gmtx68R0c6QgtTDrpnFWqV93Y";
//      // card1.setCardId(cardId1);
//      // WxCardApiSignature addCard1Signature =
//      // cardxService.createCardApiSignature(cardId1);
//      // addCard1Signature.setCardId(cardId1);
//      // JSONObject cardExt = new JSONObject();
//      // cardExt.put("nonce_str", addCard1Signature.getNonceStr());
//      // cardExt.put("timestamp", addCard1Signature.getTimestamp());
//      // cardExt.put("signature", addCard1Signature.getSignature());
//      // card1.setCardExt(cardExt.toJSONString());
//
//      RsCardSign card2 = new RsCardSign();
//      cards.add(card2);
//      String cardId2 = "p76gmtzFXmfhX51O5hTwTDGDkJNU";
//      card2.setCardId(cardId2);
//      WxCardApiSignature addCard1Signature = cardxService.createCardApiSignature(cardId2);
//      addCard1Signature.setCardId(cardId2);
//      JSONObject cardExt = new JSONObject();
//      cardExt.put("nonce_str", addCard1Signature.getNonceStr());
//      cardExt.put("timestamp", addCard1Signature.getTimestamp());
//      cardExt.put("signature", addCard1Signature.getSignature());
//      card2.setCardExt(cardExt.toJSONString());
//
//      j.setObj(cards);
//      j.setSuccess(true);
//    } catch (Exception e) {
//      j.setMsg(e.getMessage());
//      j.setSuccess(false);
//    }
//    return j;
//  }
//
//  @RequestMapping(params = "test")
//  public ModelAndView test(HttpServletRequest request, HttpServletResponse response)
//      throws Exception {
//    WxJsapiSignature signture = mpService.createJsapiSignature(getRequestUrl(request));
//
//    WxCardApiSignature cardSignture = cardxService
//        .createCardApiSignature(mpService.getWxMpConfigStorage().getAppId());
//
//    // addCard时不能传入AppId
//    String cardId1 = "p76gmtx68R0c6QgtTDrpnFWqV93Y";
//    WxCardApiSignature addCard1Signature = cardxService.createCardApiSignature(cardId1);
//    addCard1Signature.setCardId(cardId1);
//
//    String cardId2 = "p76gmtzFXmfhX51O5hTwTDGDkJNU";
//    WxCardApiSignature addCard2Signature = cardxService.createCardApiSignature(cardId2);
//    addCard2Signature.setCardId(cardId2);
//
//    Map<String, Object> m = Maps.newHashMap();
//    m.put("signture", signture);
//    m.put("cardSignture", cardSignture);
//    m.put("addCard1Signature", addCard1Signature);
//    m.put("addCard2Signature", addCard2Signature);
//
//    return new ModelAndView("test", m);
//  }
//
//  @RequestMapping(params = "createCard")
//  @ResponseBody
//  public AjaxJson createCard(HttpServletRequest request) {
//    AjaxJson j = new AjaxJson();
//
//    try {
//      // WxMpMaterialService materialService = mpService.getMaterialService();
//      // WxMediaImgUploadResult result = materialService.mediaImgUpload(new
//      // File(
//      // "E:/workspaces/neon-workspace/cards-parent/cards-web/src/main/java/com/gomore/wechat/app/account/controller/logo.png"));
//      // String logoUrl = result.getUrl();
//      // logger.info("logo url:" + logoUrl);
//      // result = materialService.mediaImgUpload(new File(
//      // "E:/workspaces/neon-workspace/cards-parent/cards-web/src/main/java/com/gomore/wechat/app/account/controller/member.jpg"));
//      // String backgroundUrl = result.getUrl();
//      // logger.info("member background url:" + result.getUrl());
//
//      // 勾芒号
//      String logoUrl = "http://mmbiz.qpic.cn/mmbiz_png/FsaxAz7EOuJ4A1PmErlmUYNZ66C55VeTSfz0HfxJaVOImyU1sfBAeTg9WKTwfMicxsxCqbfevOGyROogMONHPKQ/0";
//      String backgroundUrl = "http://mmbiz.qpic.cn/mmbiz_jpg/FsaxAz7EOuJ4A1PmErlmUYNZ66C55VeTkBvZAxibgaVXzgt7sicKAw1yj0BiamjYhibu6TsX0atKT5o0x9C2xYicW8A/0";
//
//      Object v = null;
//      // String cardId = createCard(backgroundUrl);
//      // String cardId = "p76gmtx68R0c6QgtTDrpnFWqV93Y";
//      // ApplyCardQrCodeResult qrResult = createQrCode(cardId);
//      // logger.info(JsonMapper.defaultMapper().toJson(qrResult));
//      //
//      v = createMemberCard(logoUrl, backgroundUrl);
//      String mbrCardId = v.toString();
//      // String mbrCardId = "p76gmtzFXmfhX51O5hTwTDGDkJNU";
//      ApplyCardQrCodeResult mbrQrResult = createQrCode(mbrCardId);
//      logger.info(JsonMapper.defaultMapper().toJson(mbrQrResult));
//
//      // v = getCard();
//      // v = setWhiteList();
//      // v = queryList();
//      //
//      v = getUserCardList();
//      //
//      // v = queryCardCode();
//
//      // v = modifyStock();
//
//      // v = consumeCard();
//
//      j.setObj(v);
//      j.setSuccess(true);
//    } catch (Exception e) {
//      j.setSuccess(false);
//      j.setMsg(e.getMessage());
//    }
//    return j;
//  }
//
//  @RequestMapping(params = "decryptCode")
//  @ResponseBody
//  public AjaxJson decryptCardCode(@RequestParam("encryptCode") String encryptCode) {
//    AjaxJson aj = new AjaxJson();
//    try {
//      String code = cardxService.decryptCardCode(encryptCode);
//      aj.setSuccess(true);
//      aj.setObj(code);
//    } catch (Exception e) {
//      aj.setSuccess(false);
//      aj.setMsg(e.getMessage());
//    }
//    return aj;
//  }
//
//  private Object consumeCard() throws Exception {
//    String code = "438818257228";
//    ConsumeCardResult result = cardxService.consumeCard(code);
//    return result;
//  }
//
//  private Object queryCardCode() throws Exception {
//    String code = "438818257228";
//    String cardId = "plyCut8J1i1VjxB4qJqVReh0aAmQ";
//    WxMpCardResult result = cardxService.queryCardCode(cardId, code, true);
//    return result;
//  }
//
//  private Object getUserCardList() throws Exception {
//    String openId = "o76gmtxcZLtBi1_9aRRyRlWnBpQM";
//    UserCards result = cardxService.getUserCards(openId, null);
//    return result;
//  }
//
//  private Object modifyStock() throws Exception {
//    String cardId = "plyCut8J1i1VjxB4qJqVReh0aAmQ";
//    cardxService.modifystock(cardId, 10);
//    return null;
//  }
//
//  private ApplyCardQrCodeResult createQrCode(String cardId) throws Exception {
//    // String cardId = "plyCut8J1i1VjxB4qJqVReh0aAmQ";
//    // String cardId = "plyCut2LFRVTC15qgdDri9wK-m3w";
//    ApplyCardQrCode apply = new ApplyCardQrCode();
//    apply.setCardId(cardId);
//    apply.setExpireSeconds(10000);
//    ApplyCardQrCodeResult result = cardxService.applyCardQrCode(apply);
//    return result;
//  }
//
//  private Object queryList() throws Exception {
//    QueryCardResult result = cardxService.query(0, 50);
//    return result;
//  }
//
//  private Object setWhiteList() throws Exception {
//    cardxService.setWhiteListByOpenId("olyCut90Cy-b9ew8ck9SEqCwkgDk");
//    return true;
//  }
//
//  private String createMemberCard(String logoUrl, String backgroundUrl) throws Exception {
//    // plyCut2LFRVTC15qgdDri9wK-m3w
//    Member m = new Member();
//
//    BaseInfo bi = new BaseInfo();
//    m.setBaseInfo(bi);
//
//    bi.setLogoUrl(logoUrl);
//    bi.setBrandName("勾芒会员卡");
//    bi.setCodeType(CodeType.CODE_TYPE_QRCODE);
//    bi.setTitle("体验卡");
//    bi.setColor("Color010");
//    bi.setNotice("使用时向服务员出示此卡");
//    bi.setServicePhone("020-88888888");
//    bi.setDescription("不可与其他优惠同享\n如需团购券发票，请在消费时向商户提出\n店内均可使用，仅限堂食");
//    DateInfo dateInfo = new DateInfo();
//    dateInfo.setType(DateInfoType.DATE_TYPE_FIX_TIME_RANGE);
//    DateTime now = new DateTime();
//    dateInfo.setBeginTime(now.toDate());
//    dateInfo.setEndTime(now.plusYears(10).toDate());
//    bi.setDateInfo(dateInfo);
//    Sku sku = new Sku();
//    sku.setQuantity(10000);
//    bi.setSku(sku);
//    bi.setUseLimit(1000);
//    bi.setGetLimit(1);
//    bi.setUseCustomCode(false);
//    bi.setBindOpenId(false);
//    bi.setCanShare(true);
//    bi.setCanGiveFriend(true);
//    bi.setCenterTitle("顶部居中按钮");
//    bi.setCenterSubTitle("按钮下方的wording");
//    bi.setCenterUrl("http://www.qq.com");
//    bi.setCustomUrlName("立即使用");
//    bi.setCustomUrl("http://www.qq.com");
//    bi.setCustomUrlSubTitle("6个汉字");
//    bi.setPromotionUrlName("更多优惠");
//    bi.setPromotionUrlSubTitle("卖场大优惠");
//    bi.setPromotionUrl("http://www.qq.com");
//    bi.setSource("大众点评");
//
//    // 会员卡字段
//    m.setBackgroundPic(backgroundUrl);
//    m.setPrerogative("持白金会员卡到店消费，可享8折优惠");
//    m.setAutoActivate(false);
//    m.setWxActivate(true);
//    // m.setActivateUrl(null);
//    m.setSupplyBonus(true);
//    m.setBonusUrl("http://www.gomoretech.com");
//    m.setSupplyBalance(true);
//    m.setBalanceUrl("http://www.gomoretech.com");
//    // 自定义列表项
//    // m.setCustomCell1(
//    // new CustomCell("FIELD_NAME_TYPE_LEVEL", "http://www.gomoretech.com",
//    // "查看会员等级"));
//    m.setCustomField1(new CustomField("FIELD_NAME_TYPE_COUPON", "http://www.gomoretech.com"));
//    // m.setCustomField2(new CustomField("FIELD_NAME_TYPE_DISCOUNT",
//    // "http://www.gomoretech.com"));
//    // m.setCustomField3(new CustomField("FIELD_NAME_TYPE_STAMP",
//    // "http://www.gomoretech.com"));
//    m.setBonusCleared("积分有效期为一年，年底未使用即清零");
//    m.setBalanceRules("积分规则非常复杂，暂不说明");
//    m.setBalanceRules("集会规则更复杂，最高不能超过10000万");
//    BonusRule br = new BonusRule();
//    br.setCostMoneyUnit(100);
//    br.setIncreaseBonus(1);
//    br.setMaxIncreaseBonus(100);
//    br.setInitIncreaseBonus(10);
//    br.setCostBonusUnit(5);
//    br.setReduceMoney(100);
//    br.setLeastMoney2UseBonus(1000);
//    br.setMaxReduceBonus(50);
//    m.setBonusRule(br);
//    m.setDiscount(8);
//
//    // plyCut8J1i1VjxB4qJqVReh0aAmQ
//    String cardId = cardxService.createMember(m);
//    logger.info("会员卡card id = " + cardId);
//
//    // 激活字段
//    ActivateMemberForm form = new ActivateMemberForm();
//    form.setCardId(cardId);
//    FormField requiredForm = new FormField();
//    form.setRequiredForm(requiredForm);
//    requiredForm.setCanModify(true);
//    requiredForm.setCommonFieldIds(Lists.newArrayList(CommonFieldID.USER_FORM_INFO_FLAG_MOBILE,
//        CommonFieldID.USER_FORM_INFO_FLAG_NAME, CommonFieldID.USER_FORM_INFO_FLAG_BIRTHDAY,
//        CommonFieldID.USER_FORM_INFO_FLAG_IDCARD, CommonFieldID.USER_FORM_INFO_FLAG_HABIT));
//    requiredForm.setCustomFields(Lists.newArrayList("喜欢的明星"));
//    cardxService.setActivateMemberForm(form);
//
//    return cardId;
//  }
//
//  private String createCard(String logoUrl) throws Exception {
//    Coupon c = new Coupon();
//    BaseInfo bi = new BaseInfo();
//    c.setBaseInfo(bi);
//
//    bi.setLogoUrl(logoUrl);
//    bi.setBrandName("勾芒科技");
//    bi.setCodeType(CodeType.CODE_TYPE_TEXT);
//    bi.setTitle("勾芒VIP会员卡");
//    bi.setColor("Color010");
//    bi.setNotice("使用时向服务员出示此券");
//    bi.setServicePhone("020-88888888");
//    bi.setDescription("不可与其他优惠同享\n如需团购券发票，请在消费时向商户提出\n店内均可使用，仅限堂食");
//    DateInfo dateInfo = new DateInfo();
//    dateInfo.setType(DateInfoType.DATE_TYPE_FIX_TIME_RANGE);
//    DateTime now = new DateTime();
//    dateInfo.setBeginTime(now.toDate());
//    dateInfo.setEndTime(now.plusYears(10).toDate());
//    bi.setDateInfo(dateInfo);
//    Sku sku = new Sku();
//    sku.setQuantity(100000);
//    bi.setSku(sku);
//    bi.setUseLimit(1000);
//    bi.setGetLimit(1000);
//    bi.setUseCustomCode(false);
//    bi.setBindOpenId(false);
//    bi.setCanShare(true);
//    bi.setCanGiveFriend(true);
//    bi.setCenterTitle("我的勾芒");
//    bi.setCenterSubTitle("按钮下方的wording");
//    bi.setCenterUrl("http://www.qq.com");
//    bi.setCustomUrlName("立即使用");
//    bi.setCustomUrl("http://www.qq.com");
//    bi.setCustomUrlSubTitle("6个汉字");
//    bi.setPromotionUrlName("更多优惠");
//    bi.setPromotionUrlSubTitle("卖场大优惠");
//    bi.setPromotionUrl("http://www.qq.com");
//    bi.setSource("大众点评");
//    bi.setNeedPushOnView(false);
//
//    // 优惠券字段
//    c.setDetail("勾芒公司");
//
//    // plyCut8J1i1VjxB4qJqVReh0aAmQ
//    String cardId = cardxService.createCoupon(c);
//    return cardId;
//  }
//
//  private Object getCard() throws Exception {
//    String cardId = "plyCut8J1i1VjxB4qJqVReh0aAmQ";
//    return cardxService.get(cardId);
//  }
//
//}
